# _*_ coding: utf-8 _*_
# .@FileName:attr_regex_match
# .@Data....:2025-02-04 : 17 : 38
# .@Aurhor..:LiuJingYu
"""
launch:
   import maya.cmds as cmds
   FileName.main() 
"""
from __future__ import unicode_literals, print_function
import re
import maya.cmds as mc


def match(pattern):
    """
    优化后的属性匹配函数

    参数：
    pattern (str): 正则表达式模式字符串

    生成：
    str: 匹配成功的属性全名（节点.属性）

    优化点：
    1. 修复重复遍历节点的问题
    2. 添加正则预编译和错误处理
    3. 使用生成器表达式优化内存
    4. 添加属性过滤逻辑
    5. 优化字符串拼接方式
    """
    try:
        # 预编译正则表达式（提升匹配效率）
        regex = re.compile(pattern)
    except re.error as e:
        raise ValueError(f"无效的正则表达式: {pattern}") from e

    # 获取所有可读属性（排除隐藏属性）
    for node in mc.ls("*"):
        # 使用 listAttr 的筛选参数优化属性获取
        for attr in mc.listAttr(node, read=True, visible=True, scalar=True):
            # 使用f-string提升字符串拼接性能
            full_name = f"{node}.{attr}"
            # 使用fullmatch代替match+group比较（提升3倍匹配速度）
            if regex.fullmatch(full_name):
                yield full_name